﻿#define _CRT_SECURE_NO_WARNINGS
//#include <stdio.h>
//int main()
//{
//	printf("hello C\n");
//	return 0;
//}
//
//
//int n = 100;
//printf("%d\n", n); //printf打印整型
//printf("%c\n", 'q'); //printf打印字符
//printf("%lf\n", 3.14); //printf打印双精度浮点型
//
//
//  关键字
//auto break case char const continue default do double else enum
//extern
//float for goto if int long register return short signed sizeof
//static
//struct switch typedef union unsigned void volatile while
//
//
//​  单个字符的打印可以使用%c来指定格式：
//#include <stdio.h>
//int main()
//{
//	printf("%c\n", 'Q');
//	printf("%c\n", 81);//这⾥的81是字符Q的ASCII码值，也是可以正常打印的
//	return 0;
//}
//
//
//  可打印字符展示：​
//#include <stdio.h>
//int main()
//{
//	int i = 0;
//	for (i = 32; i <= 127; i++)
//	{
//		printf("%c ", i);
//		if (i % 16 == 15)//每打印16个字符换行
//			printf("\n");
//	}
//	return 0;
//}
//
//
// 字符串的打印格式可以使用 % s 来指定，也可以直接打印如下：
//#include <stdio.h>
//int main()
//{
//	printf("%s\n", "hello C");
//	printf("hello c");
//	return 0;
//}

//#include <stdio.h>
//int main()
//{
//	char arr1[] = { 'a', 'b', 'c' };//arr1数组中存放3个字符
//	char arr2[] = "abc"; //arr2数组中存放字符串
//	printf("%s\n", arr1);
//	printf("%s\n", arr2);
//	return 0;
//}
//
//#include <stdio.h>
//int main()
//{
//	printf("%c\n", '\'');
//	printf("%s\n", "\"");
//	printf("c:\\test\\code\\test.c\n");
//	printf("\a");
//	printf("%c\n", '\130'); //130是8进制，转换成10进制是88，以88作为ASCII码值的字符是'X'
//		printf("%c\n", '\x30'); //x30中的30是16进制，转换成10进制是48，以48作为ASCII码值符是'0'
//		return 0;
//}
//
//#include <stdio.h>
//int main()
//{
//	printf("abcndef");
//	return 0;
//}
//
//#include <stdio.h>
//int main()
//{
//	printf("abc\ndef");
//	return 0;
//}
//
//  空语句
//#include <stdio.h>
//	  int main()
//  {
//	  ;//空语句
//	  return 0;
//  }

//#include <stdio.h>
//int main()
//{
//	int a = 20;
//	int b = 0;
//	b = a + 5; //表达式语句
//	return 0;
//}
//
//​
//#include <stdio.h>
//void print(int arr[], int sz) //函数的⼤括号中的代码也构成复合语句
//{
//	int i = 0;
//	for (i = 0; i < sz; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//}
//int main()
//{
//	int i = 0;
//	int arr[10] = { 0 };
//	for (i = 0; i < 10; i++) //for循环的循环体的⼤括号中的就是复合语句
//	{
//		arr[i] = 10 - i;
//		printf("%d\n", arr[i]);
//	}
//	return 0;
//}
//
///* 注释 */
///*
//这是⼀⾏注释
//*/​
//
//int fopen(char* s /* file name */, int mode);
//
//上面示例中， /* file name */ 用来对函数参数进行说明，跟在它后面的代码依然会有效执行。
//这种注释⼀定不能忘记写结束符号* / ，否则很容易导致错误。
//printf("a "); /* 注释⼀
//printf("b ");
//printf("c "); /* 注释⼆ */
//printf("d ");
//
//上⾯⽰例的原意是，第⼀⾏和第三⾏代码的尾部，有两个注释。
//
//但是，第⼀⾏注释忘记写结束符号，导致注释⼀延续到第三⾏结束。
///**/ 的这个注释也不⽀持嵌套注释， /* 开始注释后，遇到第⼀个 */ 就认为注释结束了。
//​
///*
//printf("a ");
//printf("b ");
//printf("c "); /* 注释⼆ */
//printf("d ");
//*/
//
//​第二种写法是将注释放在双斜杠 // 后面，从双斜杠到行尾都属于注释。这种注释只能是单行，可以
//放在行首，也可以放在一行语句的结尾。这是 C99 标准新增的语法。
//// 这是⼀⾏注释
//int x = 1; // 这也是注释
//
//不管是哪⼀种注释，都不能放在双引号⾥⾯。
//双引号⾥⾯的注释符号，会成为字符串的⼀部分，解释为普通符号，失去注释作⽤。
//​printf("// hello /* world */ ");
//
//编译时，注释会被替换成⼀个空格，所以 min/* 这里是注释*/Value 会变成 min Value ，而不
//是 minValue 。​